package com.smedi.ismedi.authoritymanagement.core.application.service;

import com.smedi.ismedi.authoritymanagement.core.application.command.ChangeMobileCommand;
import com.smedi.ismedi.authoritymanagement.core.application.command.ChangePasswordCommand;
import com.smedi.ismedi.authoritymanagement.core.application.command.AccountBasicCommand;
import com.smedi.ismedi.authoritymanagement.core.application.query.vo.MobileVerificationCodeVo;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.AccountBasic;

/**
 * @Author: xulinjun
 * @Date: 2021-7-2 10:39
 */
public interface AccountBasicApplicationService {
    AccountBasic generateAccount(AccountBasicCommand accountBasicCommand);

    void changePassword(ChangePasswordCommand changePasswordCommand);

    void resetPassword(String callAccount, String newPassword);

    void changeMobile(ChangeMobileCommand changeMobileCommand);

    MobileVerificationCodeVo generateVerificationCode(String callAccount);

    void submitVerificationCode(String callAccount, String verificationCode);

    void enable(Long personId);

    void disable(Long personId);

    void deleteAccount(Long personId);

    void deleteAccountOnly(Long personId);
}
